from django.conf import settings

DATABASE_MAPPING = settings.APP_DATABASE_MAPPING


class DynamicDBRouter(object):
    """
    使用到多数据库时切换
    """
    def db_for_read(self, model, **hints):
        """ 指定mode进行读取操作时应使用的数据库, 如果返回None则表示使用默认数据库 """

        return DATABASE_MAPPING.get("read", {}).get(model._meta.app_label)

    def db_for_write(self, model, **hints):
        """ writing SomeModel to test """

        return DATABASE_MAPPING.get("write", {}).get(model._meta.app_label)

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        """
        指定是否允许在别名为db的数据库上运行迁移操作。如果允许运行，则返回True；否则返回False、None

        使用以下迁移命令指定数据库：
            python3 manage.py migrate --database=XXX XXX_APP
        """
        if app_label in DATABASE_MAPPING.get("migrate", {}):
            return db == DATABASE_MAPPING.get("migrate", {}).get(app_label)
        return None
